package Veterinaria.negocio;

import java.util.Collection;

import Veterinaria.dao.CitasDao;
import Veterinaria.dao.FacturaDAO;
import Veterinaria.excepcion.CodigoDuplicadoExcepcion;
import Veterinaria.excepcion.DAOExcepcion;
import Veterinaria.modelo.Articulo;
import Veterinaria.modelo.Cita;
import Veterinaria.modelo.DetalleArticuloCita;
import Veterinaria.modelo.DetalleArticuloCitaTMP;
import Veterinaria.modelo.Doctor;
import Veterinaria.modelo.FacturaDetalleTMP;
import Veterinaria.modelo.Paciente;

public class GestionCita {
	public Collection<Cita> buscarPorPaciente(String idpaciente)
			throws DAOExcepcion {
		CitasDao dao = new CitasDao();
		return dao.listar();
	}

	public Cita insertar(String idcita, String idpaciente, String iddoctor,
			String direccion, String tipocita, String citaestado,
			String feccita, String hora, String notas, String estado)
			throws DAOExcepcion, CodigoDuplicadoExcepcion {
		CitasDao dao = new CitasDao();

		Cita vo = new Cita();

		GestionPersona doctor = new GestionPersona();
		GestionPaciente paciente = new GestionPaciente();

		Doctor doc = doctor.obtenerDoctor(iddoctor);
		Paciente pac = paciente.obtener(idpaciente);

		vo.setCod_cita(idcita);
		vo.setoPacientes(pac);
		vo.setoDoctores(doc);
		vo.setDireccion(direccion);
		vo.setTipo_cita(tipocita);
		vo.setCitaestado(citaestado);
		vo.setFecha(feccita);
		vo.setHora(hora);
		vo.setNotas(notas);
		vo.setEstado(estado);

		return dao.insertar(vo);
	}

	public Cita obtener(String idcita) throws DAOExcepcion {
		CitasDao dao = new CitasDao();
		return dao.obtener(idcita);
	}

	//
	// public void eliminar(String idPaciente) throws DAOExcepcion {
	// PacienteDAO dao = new PacienteDAO();
	// dao.eliminar(idPaciente);
	// }
	//
	public Cita actualizar(String idcita, String direccion, String tipocita,
			String citaestado, String feccita, String hora, String notas,
			String estado) throws DAOExcepcion {
		CitasDao dao = new CitasDao();

		Cita vo = new Cita();
		vo.setCod_cita(idcita);
		vo.setDireccion(direccion);
		vo.setTipo_cita(tipocita);
		vo.setCitaestado(citaestado);
		vo.setFecha(feccita);
		vo.setHora(hora);
		vo.setNotas(notas);
		vo.setEstado(estado);

		return dao.actualizar(vo);
	}

	public Collection<Cita> listar() throws DAOExcepcion {
		CitasDao dao = new CitasDao();
		return dao.listar();
	}

	
	
	
	public Collection<Cita> listarCitasr(String idcita) throws DAOExcepcion {
		CitasDao dao = new CitasDao();
		return dao.listarCitas(idcita);
	}
	
	public DetalleArticuloCita insertarcita_articulo(String idcita,
			String idarticulo, Integer cantidad) throws DAOExcepcion {
		CitasDao dao = new CitasDao();

		DetalleArticuloCita vo = new DetalleArticuloCita();
		GestionCita cita = new GestionCita();
		GestionArticulo articulo = new GestionArticulo();
		// Obtengo cita y articulo
		Cita cit = cita.obtener(idcita);
		Articulo art = articulo.obtener(idarticulo);

		vo.setOcita(cit);
		vo.setOarticulo(art);
		vo.setCantidad(cantidad);

		return dao.insertarcita_articulo(vo);
	}

	public DetalleArticuloCita actualizarDetalle(String idcita,
			String idarticulo, Integer cantidad) throws DAOExcepcion {
		CitasDao dao = new CitasDao();

		DetalleArticuloCita vo = new DetalleArticuloCita();
		GestionCita cita = new GestionCita();
		GestionArticulo articulo = new GestionArticulo();

		Cita cit = cita.obtener(idcita);
		Articulo art = articulo.obtener(idarticulo);

		vo.setOcita(cit);
		vo.setOarticulo(art);
		vo.setCantidad(cantidad);

		return dao.actualizarDetalle(vo);
	}

	public void eliminarArticuloCita(String idcita, String idarticulo)
			throws DAOExcepcion {
		CitasDao dao = new CitasDao();
		dao.eliminarArticuloCita(idcita, idarticulo);
	}

	public Collection<DetalleArticuloCita> listarDetalleArticuloCita()
			throws DAOExcepcion {
		CitasDao dao = new CitasDao();
		return dao.listarDetalleArticuloCita();
	}

	public DetalleArticuloCita obtenerdetalle(String idcita, String idarticulo)
			throws DAOExcepcion {
		CitasDao dao = new CitasDao();
		return dao.obtenerdetalle(idcita, idarticulo);
	}

	public Collection<DetalleArticuloCita> buscarDetallexCita(String idcita)
			throws DAOExcepcion {
		CitasDao dao = new CitasDao();
		return dao.buscarDetallexCita(idcita);
	}

	
	public Cita GenerarCodigo() throws DAOExcepcion {
		CitasDao dao = new CitasDao();
		return dao.GenerarCodigo();
	}
	
	public Collection<Cita> obtenerReporteCita(String paciente, String tcita, String desde, String hasta, String estado) throws DAOExcepcion {
		CitasDao dao = new CitasDao();
		return dao.obtenerReporteCita(paciente, tcita, desde, hasta, estado);
	}

	
	public DetalleArticuloCitaTMP insertarfacturadetalletmp(String idcita,String idarticulo, String descripcion, String unidadmed, Integer cantidad) 
			throws DAOExcepcion {

		CitasDao dao = new CitasDao();

		DetalleArticuloCitaTMP vo = new DetalleArticuloCitaTMP();

		vo.setIdcita(idcita);
		vo.setIdarticulo(idarticulo);
		vo.setDescripcion(descripcion);
		vo.setUnidadmed(unidadmed);
		vo.setCantidad(cantidad);
		return dao.insertarDetalleTemporal(vo);
	}	
	
	public Collection<DetalleArticuloCitaTMP> listartemporal() throws DAOExcepcion {
		CitasDao dao = new CitasDao();
		return dao.listartemporal();
	}
	
	public DetalleArticuloCitaTMP eliminartemporal() throws DAOExcepcion{
		CitasDao dao = new CitasDao();
		
		dao.eliminarcitatemporal();
		
		return null;
		
	}
	
	public DetalleArticuloCitaTMP eliminarcitaTemporal(String Item) throws DAOExcepcion {

		CitasDao dao = new CitasDao();

		DetalleArticuloCitaTMP vo = new DetalleArticuloCitaTMP();
		vo.setIdarticulo(Item);
		return dao.eliminarcitaTemporal(vo);
	}		
		
	
}
